# 函数
# name = "liuhaopeng"
# length = len(name)
# print(length)
# 函数的定义  先定义后调用
# def my_len(data):
#     count = 0
#     for i in data:
#         count+=1
#     return count
#
#
# print(my_len(name))


# 加法
# def add(x,y):
#     result = x+y
#     print(f"{x} + {y}={result}")
#
# add(5,6)
#
#
# a = None


# 全局变量
# num = 200
# def function():
#     global num
#     num = 500
#
# function()
# print(num)

# 案例1：黑马ATM
money = 5000000
n = input("输入客户姓名:")

#
def function1():
    # 查询函数
    global money
    print(f"余额为：{money}。")


def function2(data):
    # 存款函数
    global money
    money += data
    print(f"存款成功！余额为：{money}。")


def function3(data):
    # 取款函数
    global money
    money -= data
    print(f"取款成功！余额为：{money}。")


def function4():
    print("请选择你的操作：1.查看余额;2.存款;3.取款;4.退出")


# while True:
#     function4()
#     num = input()
#     if num == "1":
#         function1()
#     elif num == "2":
#         store = int(input("输入需要存入的金额:"))
#         function2(store)
#     elif num == "3":
#         store = int(input("输入需要取出的金额:"))
#         function3(store)
#     else:
#         function4()
#         break



#返回多个返回值
def function5():
    return 1,2

print(function5())

#传参
def function6(name,age,gender):
    print(f"name:{name},age:{age},gender:{gender}")

function6(name='小王',age = 11,gender = '女')#关键字传参，可不按顺序
#可以和位置参数混用,但位置参数需要在前
function6('小王',gender = '女',age = 11)

#默认参数，如果不传入gender，默认为男，但可以覆盖
#设置默认值，必须在参数列表的最后一个
def function6(name,age,gender='男'):
    print(f"name:{name},age:{age},gender:{gender}")

#位置不定参数
#args是元组类型，可以接收任意个参数
def function7(*args):
    print(args)

function7(1,2,3,4,5,'lhp')

#关键字不定长
def function8(**kwargs):
    print(type(kwargs),kwargs)

function8(name='lhp',age=18,gender='男')


#函数作为参数传递
#计算逻辑不同，可以传入不同函数，以实现不同的逻辑
def function9(func):
    print(func)

function9(function5())


#匿名函数,只能临时使用一次
#lambda 参数:函数体(一行代码)
function9(lambda x,y:x+y)

